﻿using System;

namespace Gp.Scripts.Core
{
    /// <summary>
    /// 加成信息存储结构体，用于存储对于xx属性的加成需求。<br/>
    /// 有percentage 和 num 两种数值加成方式<br/>
    /// 在取结果时，先进行百分比计算再进行加计算<br/>
    /// 计算公式：<b>[原数值]*(1+percentage)+num</b><br/>
    /// 可以对其使用 + 运算符<br/>
    /// </summary>
    [Serializable]
    public struct BonusNumber
    {
        public ModifierValue ModifierValue { get; set; }
        public int num => ModifierValue.num;
        public int percentage => ModifierValue.percentage;

        public int BonusField { get; }

        public BonusNumber(int bonusField, int num) : this()
        {
            BonusField    = bonusField;
            ModifierValue = new ModifierValue(num);
        }

        public BonusNumber(int bonusField, int num, int percentage) : this()
        {
            BonusField    = bonusField;
            ModifierValue = new ModifierValue(0, percentage);
        }

        public static BonusNumber Number(int bonusField, int num) => new(bonusField, num);

        public static BonusNumber Percentage(int bonusField, int percent) => new(bonusField, 0, percent);
    }


    // public static class BonusExtend
    // {
    //     // public static ModifierValue Modifier(this BonusNumber bonus)
    //     // {
    //     //     return new ModifierValue(bonus.num, bonus.percentage);
    //     // }
    // }
}